package negocios.gerenciadores;

import java.util.ArrayList;
import java.util.Calendar;

import negocios.cinemaBeans.Exibicao;
import negocios.cinemaBeans.Filme;
import negocios.cinemaBeans.FiltroExibicao;
import dados.RepositorioExibicao;

public class GerenciadorDeExibicao implements IGerenciadorDeExibicao{
	private RepositorioExibicao repositorioExibicao = dados.RepositorioExibicao.getRepositorioExibicao();
	
	
	public void criarExibicao(Filme filme, int hora, int minutos) {
		Exibicao exibicao = new Exibicao(filme, hora, minutos);
		this.repositorioExibicao.addExibicao(exibicao);		
	}


	public ArrayList<Exibicao> filtraExibicao(FiltroExibicao filtro) {
		ArrayList<Exibicao> listaFiltrada = new ArrayList<Exibicao>();
		
		for(Exibicao exibicao : this.repositorioExibicao.getListaExibicao()){
			if(this.verificaFiltro(exibicao, filtro)){
				listaFiltrada.add(exibicao);
			}
		}
		return listaFiltrada;
	}
	
	
	public Exibicao escolheExibicao(int indice){
		Exibicao exibicao = null;
		if(indice<this.repositorioExibicao.getListaExibicao().size()){
			exibicao = this.repositorioExibicao.getListaExibicao().get(indice);
		}
		return exibicao;
	}


	public void alteraExibicao(Exibicao exibicao, Filme filme, int hora, int minutos) {
		exibicao.setFilme(filme);
		exibicao.setHorario(hora, minutos);
		
	}


	public void deletaExibicao(Exibicao exibicao) {
		this.repositorioExibicao.delExibicao(exibicao);
		
	}
	
	
	
	private boolean verificaFiltro(Exibicao exibicao, FiltroExibicao filtro){
		boolean verifica = false;
		
		if (filtro.getTitulo()!= null){
			if(exibicao.getFilme().getTitulo().equals(filtro.getTitulo())){
				verifica = true;
			}else{
				return verifica = false;
			}
		}
		if (filtro.getHorario()!=null){
			if(exibicao.getHorario().before(filtro.getHorario())){
				verifica = true;
			}else{
				return verifica = false;
			}
		}
		
		return verifica;
	}

}
